﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DAL;
using BL;

namespace QuanLyCHTrangSuc
{
    public partial class frmCapNhatSanPham : Form
    {
        private bool duocChonTab = false;
        private bool daLuu = false;

        DanhMucLoaiSanPhamBL dmLoaiSPBL = new DanhMucLoaiSanPhamBL();
        NhaSanXuatBL dsNSXBL = new NhaSanXuatBL();
        SanPhamBL sanPhamBL = new SanPhamBL();

        List<DanhMucLoaiSanPhamDAL> dsLoaiSanPham = new List<DanhMucLoaiSanPhamDAL>();
        List<NhaSanXuatDAL> dsNSX = new List<NhaSanXuatDAL>();

        private SanPhamDAL sanPham = null;
        public frmCapNhatSanPham()
        {
            InitializeComponent();
        }

        public frmCapNhatSanPham(SanPhamDAL aSp)
        {
            this.sanPham = aSp;
            InitializeComponent();
            this.gridThongSoKyThuat.Columns[0].DefaultCellStyle.Font = new Font("Arial", 8F, FontStyle.Bold);
            this.gridThongSoKyThuat.Columns[0].DefaultCellStyle.BackColor = SystemColors.ControlLight;
        }

        private void pictureBox_Click(object sender, EventArgs e)
        {

        }

        private void NapDuLieuVaoCbbNhomSanPham()
        {
            dsLoaiSanPham = dmLoaiSPBL.LayDanhMucLoaiSanPham();
            cbbNhomSanPham.DataSource = dsLoaiSanPham;
            cbbNhomSanPham.DisplayMember = "TenLoaiSanPham";
            cbbNhomSanPham.ValueMember = "MaLoaiSanPham";
        }

        private void NapDuLieuVaoCbbNhaSanXuat()
        {
            dsNSX = dsNSXBL.LayDanhSachNhaSanXuat();
            cbbNhaSanXuat.DataSource = dsNSX;
            cbbNhaSanXuat.DisplayMember = "TenNhaSanXuat";
            cbbNhaSanXuat.ValueMember = "MaNhaSanXuat";
        }

        private void frmCapNhatSanPham_Load(object sender, EventArgs e)
        {
            if (this.sanPham == null)
                return;
            NapDuLieuVaoCbbNhomSanPham();
            NapDuLieuVaoCbbNhaSanXuat();

            this.cbbNhomSanPham.SelectedValue = this.sanPham.MaLoaiSanPham;
            this.pictureBox.Image = Image.FromFile(sanPham.HinhAnh);
            this.txtHinhAnh.Text = sanPham.HinhAnh;
            this.txtTen.Text = this.sanPham.TenSanPham;
            this.cbbNhaSanXuat.SelectedValue = this.sanPham.MaNhaSanXuat;
            this.txtGiaBan.Text = this.sanPham.GiaBan.ToString();
            this.txtThongTinMoTa.Text = this.sanPham.ThongTinMoTa;
            this.txtMaSanPham.Text = this.sanPham.MaSanPham.ToString();
            XL_XML.ChuoiXML = this.sanPham.ThongSoKyThuat;
            XL_XML.DocTaiLieu();
            XL_XML.XuatRaLuoi("/THONGSOKYTHUAT/THONGSO", gridThongSoKyThuat);

            if (this.sanPham.SanPhamMoi == true)
                radioButton1.Checked = true;
            else
                radioButton2.Checked = true;
            this.txtphantram.Text = this.sanPham.PhanTramKM.ToString();
            this.txtSoLuong.Text = this.sanPham.SoLuongTon.ToString();
        }

        private void btnChon_Click(object sender, EventArgs e)
        {
            OpenFileDialog hopThoai = new OpenFileDialog();
            hopThoai.Multiselect = false;
            hopThoai.InitialDirectory = "C:\\";
            hopThoai.RestoreDirectory = true;
            hopThoai.Filter = "Image Files (*.gif;*.jpg;*.jpeg;*.bmp;*.png)|*.gif;*.jpg;*.jpeg;*.bmp;*.png";
            if (hopThoai.ShowDialog() == DialogResult.OK)
            {
                txtHinhAnh.Text = hopThoai.FileName;
                pictureBox.Image = Image.FromFile(hopThoai.FileName);
            }
            else
            {
                return;
            }
        }

        private int KiemTraKhaNangTiep()
        {
            if (txtTen.Text == null || txtTen.Text.Length == 0)
                return -1;
            if (cbbNhaSanXuat.SelectedValue == null)
            {
                if (cbbNhaSanXuat.Text.Length == 0)
                    return -2;
                return 0;
            }
            return 1;
        }

        private void btnTiep_Click(object sender, EventArgs e)
        {
            int kt = KiemTraKhaNangTiep();
            switch (kt)
            {
                case -1:
                    MessageBox.Show("Chưa nhập tên sản phẩm.", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                case -2:
                    MessageBox.Show("Chưa nhập nhà sản xuất.", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                case 0:
                    DialogResult kq = MessageBox.Show(cbbNhaSanXuat.Text + " chưa có trong danh sách nhà sản xuất. Bạn có muốn thêm nhà sản xuất này?",
                        "Nhắc nhở", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                    if (kq == DialogResult.Yes)
                    {
                        /*
                        NhaSanXuatDAL nhaSanXuatMoi = new NhaSanXuatDAL();
                        nhaSanXuatMoi.TenNhaSanXuat = cbbNhaSanXuat.Text;
                        if (!nhaSanXuatCLT.ThemMoiNhaSanXuat(nhaSanXuatMoi))
                        {
                            MessageBox.Show("Xảy ra lỗi trong quá trình ghi dữ liệu.", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            return;
                        }

                        NapDuLieuVaoCbbNhaSanXuat();
                        cbbNhaSanXuat.SelectedValue = nhaSanXuatCLT.LayMNSXNhapCuoi();
                         */
                    }
                    else if (kq == DialogResult.No)
                    {
                        return;
                    }
                    break;
            }

            //////////// sản phẩm  /////////////

            sanPham.TenSanPham = txtTen.Text;
            sanPham.MaNhaSanXuat = (string)cbbNhaSanXuat.SelectedValue;
            sanPham.MaLoaiSanPham = (string)cbbNhomSanPham.SelectedValue;
            sanPham.HinhAnh = txtHinhAnh.Text;
            sanPham.GiaBan = float.Parse(txtGiaBan.Text);
            sanPham.GiaMua = 0;
            sanPham.ThongSoKyThuat = txtThongTinMoTa.Text;
            if (radioButton1.Checked == true)
                sanPham.SanPhamMoi = true;
            else
                sanPham.SanPhamMoi = false;
            sanPham.PhanTramKM = float.Parse(txtphantram.Text);
            sanPham.SoLuongTon = int.Parse(txtSoLuong.Text);

            ////////////////////////////////////


            duocChonTab = true;
            tabControl.SelectedIndex = 1;
        }

        private void btnThoat1_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnThoat2_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnTroLai_Click(object sender, EventArgs e)
        {
            duocChonTab = true;
            tabControl.SelectedIndex = 0;
        }

        private void tabControl_Selecting(object sender, TabControlCancelEventArgs e)
        {
            if (duocChonTab == false)
                e.Cancel = true;
            duocChonTab = false;
        }

        private void radioButton1_CheckedChanged(object sender, EventArgs e)
        {
            radioButton2.Checked = false;
        }

        private void radioButton2_CheckedChanged(object sender, EventArgs e)
        {
            radioButton1.Checked = false;
        }

        private void btnLuu_Click(object sender, EventArgs e)
        {
            XL_XML.NhapTuLuoi(gridThongSoKyThuat);
            string thongSoKyThuat = XL_XML.GhiTaiLieu();
            sanPham.ThongSoKyThuat = thongSoKyThuat;

            if (sanPhamBL.CapNhatSanPham(sanPham))
            {
                MessageBox.Show("Lưu thành công.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                MessageBox.Show("Có lỗi xảy ra trong quá trình ghi dữ liệu.", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            this.daLuu = true;
        }

        private void frmCapNhatSanPham_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (this.daLuu)
                return;
            
            DialogResult kq = MessageBox.Show("Bạn có muốn nhập sản phẩm này không?",
                "Nhắc nhở",
                MessageBoxButtons.YesNoCancel,
                MessageBoxIcon.Question,
                MessageBoxDefaultButton.Button3);

            if (kq == DialogResult.Yes)
            {
                XL_XML.NhapTuLuoi(gridThongSoKyThuat);
                string thongSoKyThuat = XL_XML.GhiTaiLieu();
                sanPham.ThongSoKyThuat = thongSoKyThuat;
                sanPhamBL.CapNhatSanPham(sanPham);
            }
            else if (kq == DialogResult.No)
            {
                return;
            }
            else if (kq == DialogResult.Cancel)
            {
                e.Cancel = true;
            }
        }
    }
}
